package character.writer;

import java.io.*;

//拷贝文件夹，还得考虑子文件夹
//将"G:\Javatest2\character\reader"拷贝到"G:\Javatest2\character\reader2文件夹下"
public class CopyDirTest {
    public static void main(String[] args) throws IOException {
        File src=new File("G:\\Javatest2\\character\\reader");
        File desc=new File("G:\\Javatest2\\character\\reader2");
        if(src.equals(desc)){
            System.out.println("目标文件夹是源文件夹的子文件夹，不要复制");
        }else {
            copyDir(src,desc);
        }

    }
    public static void copyDir(File src, File dest) throws IOException {
        File newDir=new File(dest,src.getName());
        newDir.mkdirs();
        //从数据源file src对象中获取文件对象
        File[] files=src.listFiles();
        //遍历数组,获取每个文件夹或者文件对象
        for (File file : files) {
            if(file.isFile()){
//                是文件就拷贝
                FileInputStream fis=new FileInputStream(file);
                FileOutputStream fos=new FileOutputStream(new File(newDir,file.getName()));
                int len;
                byte[] bys=new byte[1024];
                while((len=fis.read(bys))!=-1){
                    fos.write(bys,0,len);
                }
                fis.close();
                fos.close();
            }else{
//                如果是文件夹，就递归调用
                copyDir(file,newDir);
            }
        }

    }
}
